var _this;
onmessage = function (evt){

    var d = evt.data;//通过evt.data获得发送来的数据

    _this = d["t"] ;

    var data = d["d"];
    var res , yt ;

    res = query(data["main"]);

    yt = getYt( data["secondary"]);

    var result = packageData( res , yt );

    var dd = {"result":result};

    postMessage( dd );
};

function getYt( sec ){

    var res = [];

    if(_this.YT.length==0){

        for(var i in sec){
            var ii = sec[i]["item"];
            for(var j =0 ;j<ii.length ; j++){
                pushUnique(res, ii[j]);
            }
        }
        return res;
    }

    if(typeof _this.YT =="array"||!_this.YT) return null;

    for(var i =0 ; i<_this.YT.length ; i++){
        pushUnique(res,sec[_this.YT[i]]["item"]);
    }
    return res[0];
};

function query( data ){

    var res = [],tt = null;

    for(var i=0 ; i< data.length  ; i++){

        tt = data[i];

        if(_this.QY&&_this.QY.length!=0&&notcontains(_this.QY,tt["qid"])) continue;
        if(_this.ZT&&_this.ZT.length!=0&&notcontains(_this.ZT,tt["zid"])) continue;

        res.push(tt);
    }
    return res;

};


function packageData( res ,yt){

    var  kfs=[],lpmc=[];

    var res_data = {};

    for(var i = 0 ; i < res.length ; i ++ ){

        var result = res[i];
        pushUnique(kfs,{id:result["kid"],name:result["kfs"]});
        pushUnique(lpmc,{id:result["pid"],name:result["lpmc"]});
    }

    res_data["KFS"] = kfs;
    res_data["LPMC"] = lpmc;


    res_data["XFYT"] = yt;

    return res_data;
};

function pushUnique (_this ,newD) {

    if (contains(_this,newD)) { return;}

    _this.push(newD);
};

function notcontains(arr,ele){
    return !contains( arr,ele );
};


function contains ( arr , ele) {

    if(typeof ele != "object" ){

        for(var i = 0 ; i < arr.length ; i++){

            if( arr[i] == ele ){  return true; }
        }

    }else{

        var st = JSON.stringify(ele);
        if(arr.length>0 && JSON.stringify(arr).indexOf(st) >= 0){ return true;}

    }

    return false;
};